package com.example.demo.common;

import lombok.Data;

/**
 * 这个文件不需要修改！！！
 * 所有返回结果封装在此处
 * 成功的结果状态码统一使用 200
 * 失败的结果状态码可以自定义
 * @param <T>
 */
@Data
public class Result<T> {
    private String msg;
    private Integer status;
    private T data;

    /**
     * 返回默认成功结果
     * @param data
     * @param <T>
     * @return
     */
    public static <T> com.example.demo.common.Result<T> success(T data) {
        com.example.demo.common.Result<T> result = new com.example.demo.common.Result<T>();
        result.setData(data);
        result.setStatus(200);
        result.setMsg("成功");
        return result;
    }

    /**
     * 返回默认失败结果
     * @return
     */
    public static com.example.demo.common.Result fail() {
        com.example.demo.common.Result result = new com.example.demo.common.Result();
        result.setData(null);
        result.setStatus(400);
        result.setMsg("失败");
        return result;
    }

    /**
     * 返回自定义成功消息
     * @param data 返回的数据
     * @param msg 返回的信息
     * @param status 返回的状态 成功统一使用 200
     * @return
     */
    public static <T> com.example.demo.common.Result<T> successByCusMsg(T data, String msg, Integer status) {
        com.example.demo.common.Result<T> result = new com.example.demo.common.Result<>();
        result.setData(data);
        result.setMsg(msg);
        result.setStatus(status);
        return result;
    }

    /**
     * 返回自定义失败消息
     * @param msg
     * @param status
     * @return
     */
    public static com.example.demo.common.Result failByCusMsg(String msg, Integer status) {
        com.example.demo.common.Result result = new com.example.demo.common.Result();
        result.setData(null);
        result.setMsg(msg);
        result.setStatus(status);
        return result;
    }
}

